package B刷题.哈希表;

import java.util.HashMap;

/**
 * @author wei.zhao
 * @description: 两数之和
 * @date 2022年04月15日 17:25
 */
public class Code01_TwoSum {

    /**
     * 思路：遍历数组时，target减当前值求差值，判断哈希表中是否已经有该值，有---直接将两个索引返回，
     *       没有---将该值与对应的索引放入哈希表中，
     */
    public int[] twoSum(int[] nums, int target) {
        int[] result = new int[2];
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int diff = target - nums[i];
            if (map.containsKey(diff)) {
                result[0] = i;
                result[1] = map.get(diff);
                break;
            }
            map.put(nums[i], i);
        }
        return result;
    }

}
